package net.servir.censo.service.impl;

import java.util.LinkedList;
import java.util.List;

import net.servir.censo.model.*;
import net.servir.censo.dao.CensoDAO;
import net.servir.censo.service.CensoService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class CensoServiceImpl implements CensoService {

	@Autowired
	private CensoDAO censoDAO;

	public LinkedList<Sistema> ObtenerSistema() {
		return censoDAO.ObtenerSistema();
	}

	public LinkedList<Ambito> ObtenerAmbito(Number id_sistema) {
		return censoDAO.ObtenerAmbito(id_sistema);
	}

	public LinkedList<Ejecutora> ObtenerEjecutora(Number id_ejecutora) {
		return censoDAO.ObtenerEjecutora(id_ejecutora);
	}

	public LinkedList<ResponsableIdentificacion> ObtenerResponsableIdentificacion(
			String dni) {
		return censoDAO.ObtenerResponsableIdentificacion(dni);
	}

	public ResponsableIdentificacion GetResponsableIdentificacion(String dni,
			Number idAmbito, Number idSistema) {
		return censoDAO.GetResponsableIdentificacion(dni, idAmbito, idSistema);
	}

	// --- jp ---
	public Integer ObtenerIdNivelGobierno(Number idEjecutora) {
		return censoDAO.ObtenerIdNivelGobierno(idEjecutora);
	}

	// --- fin ---

	public List ObtenerRptEjecutorCenso(Number id_ambito, Number id_ejecutora) {
		censoDAO.GenerarRptEjecutorCenso(id_ambito, id_ejecutora);
		return censoDAO.ObtenerRptEjecutorCenso(id_ambito, id_ejecutora);
	};

	public Integer ValidarUsuario(String dni, String clave) {
		return censoDAO.ValidarUsuario(dni, clave);
	};

	public Integer ValidarUsuarioAmbito(String dni, String clave) {
		return censoDAO.ValidarUsuarioAmbito(dni, clave);
	};

	public List ObtenerRptEjecutoraCenso(Number id_ejecutora, Number id_ambito,
			Number para_reporte, String dni, String nombre, String puesto_tipo,
			Number id_responsable) {
		return censoDAO.ObtenerRptEjecutoraCenso(id_ejecutora, id_ambito,
				para_reporte, dni, nombre, puesto_tipo, id_responsable);
	}

	public Integer numObservacion(Number idEjecutora, Number idAmbito) {
		return censoDAO.numObservacion(idEjecutora, idAmbito);
	}

	public List ObtenerRptResumenEjecutoraCenso(Number id_ejecutora,
			Number id_ambito, Number id_responsable) {
		return censoDAO.ObtenerRptResumenEjecutoraCenso(id_ejecutora,
				id_ambito, id_responsable);
	}

	public List<FuncionLeyenda> RptFuncionLeyenda(Number id_ambito,
			Number idResponsable) {
		return censoDAO.RptFuncionLeyenda(id_ambito, idResponsable);
	}

	public List RptPuestoLeyenda(Number id_ambito) {
		return censoDAO.RptPuestoLeyenda(id_ambito);
	}

	public void DeleteServicioCivil(Integer idAmbito, Integer idServicioCivil) {
		censoDAO.DeleteServicioCivil(idAmbito, idServicioCivil);

	}

	public Integer ObtenerNumeroFunciones(Integer idAmbito,
			Integer idResponsable) {
		return censoDAO.ObtenerNumeroFunciones(idAmbito, idResponsable);
	}

	public String ObtenerEncabezadoFunciones(Integer idAmbito,
			Integer idResponsable) {
		return censoDAO.ObtenerEncabezadoFunciones(idAmbito, idResponsable);
	}

	/*
	 * public Integer ObtenerNumeroFunciones(Integer idAmbito,Integer
	 * idResponsable) { return
	 * censoDAO.ObtenerNumeroFunciones(idAmbito,idResponsable); }
	 */

	public Integer ObtenerNumeroPuestos_tipo(Integer idAmbito) {
		return censoDAO.ObtenerNumeroPuestos_tipo(idAmbito);
	}

	public String ObtenerFechaHoraSistema() {
		return censoDAO.ObtenerFechaHoraSistema();
	}

	public String ObtenerFechaSistema() {
		return censoDAO.ObtenerFechaSistema();
	}

	public Ambito GetAmbito(Number idAmbito) {
		return censoDAO.GetAmbito(idAmbito);
	}

	public Sistema GetSistema(Number idSistema) {
		return censoDAO.GetSistema(idSistema);
	}

	public Sistema getSistema(Number idSistema, String dni, Integer idAmbito) {
		return censoDAO.getSistema(idSistema, dni, idAmbito);
	}

	public Ejecutora GetEjecutora(Number idEjecutora) {
		return censoDAO.GetEjecutora(idEjecutora);
	}

	public ResponsableEjecutoraAmbito GetResponsableEjecutoraAmbito(
			Number idResponsable, Number idEjecutora, Number idAmbito) {
		return censoDAO.GetResponsableEjecutoraAmbito(idResponsable,
				idEjecutora, idAmbito);
	}

	public void ActualizarTelefonoEjecutora(Number idEjecutora,
			String telefonoEjecutora) {
		censoDAO.ActualizarTelefonoEjecutora(idEjecutora, telefonoEjecutora);
	}

	public List<Etapa> ObtenerEtapasAmbito(Number idAmbito, Number idResponsable) {
		return censoDAO.ObtenerEtapasAmbito(idAmbito, idResponsable);
	}
	
	public List<Etapa> ObtenerEtapasAmbito(Number idAmbito, Number idResponsable, String isFuncionesPersonalizadas, Number id_sistema_etapa) {
		return censoDAO.ObtenerEtapasAmbito(idAmbito, idResponsable,isFuncionesPersonalizadas,id_sistema_etapa);
	}

	// ---jp ---
	public Integer AplicaFuncionesPersonalizadas(Number idResponsable) {
		return censoDAO.AplicaFuncionesPersonalizadas(idResponsable);
	}

	// --- fin ---

	public void FinalizarInscripcionParticipantes(Number idResponsable,
			Number idEjecutora, Number idAmbito) {
		censoDAO.FinalizarInscripcionParticipantes(idResponsable, idEjecutora,
				idAmbito);
	}

	public List<ResponsableEjecutoraAmbito> ObtenerAmbitosResponsable(
			Number idResponsable) {
		return censoDAO.ObtenerAmbitosResponsable(idResponsable);
	}

	public List<PuestoTipo> getPuestoTipos(Number idSistema) {
		return censoDAO.getPuestoTipos(idSistema);
	}

	public PuestoTipo getPuestoTipo(Number idPuestoTipo) {
		return censoDAO.getPuestoTipo(idPuestoTipo);
	}

	public Integer getIdPuestoOperador(Number idSistema) {
		return censoDAO.getIdPuestoOperador(idSistema);
	}

	public String esJefePuestoTipo(Number idPuestoTipo) {
		return censoDAO.esJefePuestoTipo(idPuestoTipo);
	}

	public Sistema getSistema(Integer idSistema) {
		return censoDAO.getSistema(idSistema);
	}

	@Override
	public Integer getIdResponsable(String dni, Number idEjecutora) {
		return censoDAO.getIdResponsable(dni, idEjecutora);

	}

	public String getJefe(String dni, Number idResponsable) {
		return censoDAO.getJefe(dni, idResponsable);
	}

	public List<ResumenEtapa> ObtenerResumenEtapa(Number idAmbito,
			Number idResponsable) {
		return censoDAO.ObtenerResumenEtapa(idAmbito, idResponsable);
	};

	public void enviaCorreoFinCenso(Number idResponsable, Number idSistema,
			Number idAmbito) {
		censoDAO.enviaCorreoFinCenso(idResponsable, idSistema, idAmbito);
	};

	public void actualizarResponsableEjecutoraAmbito(
			ResponsableEjecutoraAmbito responsableEjecutoraAmbito) {
		censoDAO.actualizarResponsableEjecutoraAmbito(responsableEjecutoraAmbito);
	};

	public LinkedList<SistemaEtapa> ObtenerSistemaEtapa() {
		return censoDAO.ObtenerSistemaEtapa();
	}

	public LinkedList<SistemaEtapa> ObtenerSistemaEtapa(Number idResponsable) {
		return censoDAO.ObtenerSistemaEtapa(idResponsable);
	}

	@Override
	public void ActualizaEjecutora(Ejecutora ejecutora) {
		censoDAO.actualizaEjecutora(ejecutora);
	}
	
	public List<Universidad> getUniversidades(){
		return censoDAO.getUniversidades();
	}
}
